package cn.bocweb.spinning.view.common;

import android.Manifest;
import android.content.Context;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Build;
import android.os.Environment;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.util.Log;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cn.bocweb.spinning.view.forun.ForunDetailActivity;

/**
 * Created by Administrator on 2016/11/22.
 */

public class MySQLiteDatabaseHelper extends SQLiteOpenHelper {
    private static final String DBPath = Environment.getExternalStorageDirectory().getAbsolutePath();
    private static final String DBName = "/spinningschool.db";
    private final static int VERSION = 1;
    Context context;
    private SQLiteDatabase db;

    /**
     * @作用： 构造方法。目的是创建数据库文件、创建SQLiteDatabase实例。
     */
    public MySQLiteDatabaseHelper(Context context, String DBName, SQLiteDatabase.CursorFactory factory, int version) {

        super(context, DBName, factory, version);
//        getConnection();
    }

    /**
     * @return void
     * @作用：获得一个数据库连接对象，即SQLiteDatabase对象。
     */
    public void getConnection() {

        db = SQLiteDatabase.openDatabase(DBPath + DBName, null, VERSION);
        Log.e("====", " SQLiteDatabase db = helper.getWritableDatabase();");
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE IF NOT EXISTS secondmatch (id integer PRIMARY KEY autoincrement, questionID text NOT NULL, title text NOT NULL," +
                "right blob NOT NULL, explain text NOT NULL, option blob NOT NULL, ttype text NOT NULL, isright integer NOT NULL," +
                " choose blob NOT NULL, libtype text NOT NULL);");
        db.execSQL("CREATE TABLE IF NOT EXISTS configTable (id integer PRIMARY KEY autoincrement, libtype text NOT NULL, timeline text NOT NULL, " +
                "type text NOT NULL,examtitle text NOT NULL,snum text NOT NULL, dnum text NOT NULL, jnum text NOT NULL," +
                "spoint text NOT NULL, dpoint text NOT NULL, jpoint textL NOT NULL,require text NOT NULL, timelimit text NOT NULL);");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        if (newVersion > oldVersion) {

            db.execSQL("DROP TABLE IF EXISTS secondMatch");
            db.execSQL("DROP TABLE IF EXISTS configTable");
            onCreate(db);

        }
    }

//    /**
//     * @作用：执行带占位符的select语句，查询数据，返回Cursor
//     * @param sql
//     * @param selectionArgs
//     * @return Cursor
//     */
//    public Cursor selectCursor(String sql, String[] selectionArgs) {
//        return db.rawQuery(sql, selectionArgs);
//    }
//
//    /**
//     * @作用：执行带占位符的select语句，返回结果集的个数
//     * @param sql
//     * @param selectionArgs
//     * @return int
//     */
//    public int selectCount(String sql, String[] selectionArgs) {
//        Cursor cursor = db.rawQuery(sql, selectionArgs);
//        int count = cursor.getCount();
//        if (cursor != null) {
//            cursor.close();
//        }
//        return count;
//    }
//    public boolean exeSql(String sql) {
//        boolean flag = false;
//        try {
//            db.execSQL(sql);
//            flag = true;
//        } catch (Exception e) {
//            e.printStackTrace();
//            flag = false;
//            return flag;
//        }
//
//        return flag;
//    }

    /**
     * @param sql
     * @param bindArgs
     * @return boolean
     * @作用：执行带占位符的update、insert、delete语句，更新数据库，返回true或false
     */
    public boolean updateData(String sql, String[] bindArgs) {
        boolean flag = false;
        try {
            db.execSQL(sql, bindArgs);
            flag = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return flag;
    }

//    /**
//     * @作用：执行带占位符的select语句，返回多条数据，放进List集合中。
//     * @param sql
//     * @param selectionArgs
//     * @return List<Map<String, Object>>
//     */
//    public List<Map<String, Object>> selectData(String sql, String[] selectionArgs) {
//        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
//        Cursor cursor = db.rawQuery(sql, selectionArgs);
//        String[] cols_names = cursor.getColumnNames();
//        boolean flag = cursor.moveToFirst();
//        while (flag) {
//            Map<String, Object> map = new HashMap<String, Object>();
//            for (int i = 0; i < cols_names.length; i++) {
//                String cols_value = cursor.getString(i);
//                map.put(cols_names[i], cols_value);
//            }
//            list.add(map);
//            flag = cursor.moveToNext();
//        }
//        if (cursor != null) {
//            cursor.close();
//        }
//        return list;
//    }
//
//    /**
//     * 作用：将cursor转成list集合
//     *
//     * @param cursor
//     * @return List<Map<String, Object>>
//     */
//    public List<Map<String, Object>> cursorToList(Cursor cursor) {
//        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
//        String[] cols_names = cursor.getColumnNames();
//        while (cursor.moveToNext()) {
//            Map<String, Object> map = new HashMap<String, Object>();
//            for (int i = 0; i < cols_names.length; i++) {
//
//                Object cols_value = null;
//                switch (cursor.getType(i)) {
//                    case 1:
//                        cols_value = cursor.getInt(cursor
//                                .getColumnIndex(cols_names[i]));
//                        break;
//                    case 2:
//                        cols_value = cursor.getFloat(cursor
//                                .getColumnIndex(cols_names[i]));
//                        break;
//                    case 3:
//                        cols_value = cursor.getString(cursor
//                                .getColumnIndex(cols_names[i]));
//                        break;
//                    case 4:
//                        cols_value = cursor.getBlob(cursor
//                                .getColumnIndex(cols_names[i]));
//                        break;
//                    default:
//                        cols_value = null;
//                        break;
//                }
//                map.put(cols_names[i], cols_value);
//            }
//            list.add(map);
//        }
//        if (cursor != null) {
//            cursor.close();
//        }
//        return list;
//    }
//
//    public void closeDb() {
//        if (db != null) {
//            db.close();
//        }
//    }
}